package LinkedListSeries;

public class ReverseListSolution_206_2 {
    public ListNode reverseList(ListNode head) {

        // 双指针法
        // cur指向当前的头结点，cur_prev是未反转时cur的前一个结点
        // 反转后cur_prev变成了cur的后一个节点
        // 两个指针遍历原始链表，操作完成
        ListNode cur = head;
        ListNode cur_prev = null;

        while (cur != null) {
            ListNode temp = cur.next;
            cur.next = cur_prev; // 实现反转
            cur_prev = cur;
            cur = temp; // cur后移
        }
        return cur_prev;
    }
}
